package com.shop.cereshop.commons.tencent.im.model.callback.request;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.shop.cereshop.commons.tencent.im.model.msg.element.TIMMsgElement;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * @description: 单聊消息已读上报后回调 请求体
 * CallbackCommand: C2C.CallbackAfterMsgReport
 * @see <a href="https://cloud.tencent.com/document/product/269/61696">单聊消息已读上报后回调</a>
 *
 * @author zdd
 * @date 2025/9/11 10:01
 * @version 1.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AfterMsgReportCallbackRequest extends CallbackRequest{

    /**
     * 消息序列号，用于标记该条消息（32位无符号整数）
     */
    @JsonProperty("MsgSeq")
    private Long msgSeq;

    /**
     * 消息随机数，用于标记该条消息（32位无符号整数）
     */
    @JsonProperty("MsgRandom")
    private Long msgRandom;

    /**
     * 消息的发送时间戳，单位为秒
     * 单聊消息优先使用 MsgTime 进行排序，同一秒发送的消息则按 MsgSeq 排序，MsgSeq 值越大消息越靠后
     */
    @JsonProperty("MsgTime")
    private Long msgTime;

    /**
     * 消息在客户端上的唯一标识
     */
    @JsonProperty("MsgId")
    private String msgId;

    /**
     * 是否仅发送给在线用户 (1: 是, 0: 否)
     */
    @JsonProperty("OnlineOnlyFlag")
    private Integer onlineOnlyFlag;

    /**
     * 消息下发结果 (0: 成功, 非0: 失败)
     */
    @JsonProperty("SendMsgResult")
    private Integer sendMsgResult;

    /**
     * 下发失败的错误信息 (成功时为 "send msg succeed")
     */
    @JsonProperty("ErrorInfo")
    private String errorInfo;

    /**
     * 消息体
     */
    @JsonProperty("MsgBody")
    private List<TIMMsgElement> msgBody;

    /**
     * 消息自定义数据,（云端保存，会发送到对端，程序卸载重装后还能拉取到）
     */
    @JsonProperty("CloudCustomData")
    private String cloudCustomData;


}
